package com.gitee.huanminabc.jcommon.base;

/**
 * 简要描述
 *
 * @Author: mac
 * @Date: 2025/4/3 12:17
 * @Version: 1.0
 * @Description: 文件作用详细描述....
 */
public class UrlUtil {

    //截取域名   http://www.baidu.com/s/t  截取后  www.baidu.com
    public static String subDomain(String url) {
        String str = url.replace("http://", "").replace("https://", "");//去除http和https前缀
        //按‘/’分隔，取第一个
        return str.split("/")[0];
    }

    //截取url的路径,比如http://localhost:8080/abc/def/123?name=huanmin => /abc/def/123
    public static String getUrlPath(String url) {
        if (url == null || url.isEmpty()) {
            return "";
        }

        // 去除协议部分
        int protocolEndIndex = url.indexOf("://");
        if (protocolEndIndex != -1) {
            url = url.substring(protocolEndIndex + 3);
        }
        //把第一个/之前的去掉
        int firstSlashIndex = url.indexOf("/");
        if (firstSlashIndex != -1) {
            url = url.substring(firstSlashIndex);
        }
        // 去除查询参数部分
        int queryStartIndex = url.indexOf("?");
        if (queryStartIndex != -1) {
            url = url.substring(0, queryStartIndex);
        }
        // 去除路径中的多余斜杠
        return url;
    }


    //多个url合并兼容/
    public static String mergeUrl(String... url) {
        StringBuilder sb = new StringBuilder();
        boolean isHttpOrHttps = false;

        for (String s : url) {
            if (s == null || s.isEmpty()) {
                continue;
            }

            // 检查是否以 http:// 或 https:// 开头
            if (s.startsWith("http://") || s.startsWith("https://")) {
                isHttpOrHttps = true;
            }

            // 去除字符串两端的斜杠
            s = s.replaceAll("^/+|/+$", "");

            // 如果 StringBuilder 不为空且最后一个字符不是斜杠，则追加斜杠
            if (sb.length() > 0 && sb.charAt(sb.length() - 1) != '/') {
                sb.append("/");
            }

            // 如果不是以 http:// 或 https:// 开头，且是第一个部分，则确保以 / 开头
            if (!isHttpOrHttps && sb.length() == 0) {
                sb.append("/");
            }

            sb.append(s);
        }

        return sb.toString();
    }
}
